package com.example.springbootlocal.utils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author X.I.O
 * @title: DateUtils
 * @projectName springboot
 * @description: TODO
 * @date 2021/10/26 14:55
 */
public class DateUtils {

    private static final String[] WEEK_DAYS = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};


    /**
     * 将一个时间戳转换成提示性时间字符串，如刚刚，1秒前
     */
    public static String convertTimeToString(Date date) {
        Long current = System.currentTimeMillis();
        long time = current - date.getTime();
        time= time / 1000;
        if (time < 60 && time >= 0) {
            return "刚刚";
        } else if (time >= 60 && time < 3600) {
            return time / 60 + "分钟前";
        } else if (time >= 3600 && time < 3600 * 24) {
            return time / 3600 + "小时前";
        } else if (time >= 3600 * 24 && time < 3600 * 24 * 30) {
            return time / 3600 / 24 + "天前";
        } else if (time >= 3600 * 24 * 30 && time < 3600 * 24 * 30 * 12) {
            return time / 3600 / 24 / 30 + "个月前";
        } else if (time >= 3600 * 24 * 30 * 12) {
            return time / 3600 / 24 / 30 / 12 + "年前";
        }else {
            SimpleDateFormat dft=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return dft.format(date);
        }
    }


    /**
     * 获取Date 日期 是星期几
     * @param date 日期对象
     * @return 星期几
     */
    public static String getWeekByDate(Date date){
        Calendar calendar=Calendar.getInstance();
        if(date!=null){
            calendar.setTime(date);
        }
        return WEEK_DAYS[calendar.get(Calendar.DAY_OF_WEEK)-1];
    }


    /**
     * 获取month 月份的 第一天
     * @param month 月份
     * @return
     */
    public static Calendar getFirstDayByMonth(int month) {
        Calendar calendar = Calendar.getInstance();
        // 设置月份
        calendar.set(Calendar.MONTH, month - 1);
        // 获取某月最大天数
        int lastDay=0;
        //2月的平年瑞年天数
        if(month==2) {
            lastDay = calendar.getActualMinimum(Calendar.DAY_OF_MONTH);
        }else {
            lastDay = calendar.getActualMinimum(Calendar.DAY_OF_MONTH);
        }
        // 设置日历中月份的最大天数
        calendar.set(Calendar.DAY_OF_MONTH, lastDay);
        // 格式化日期
        return calendar;
    }











}
